<?php
class Administrator_WebmasterController extends QSource_System_Controller_Action
{
    public function init ()
    {
        $this->loadTemplate('administrator');
    }
    public function indexAction ()
    {
        $model = new Model_Webmaster_Webmaster();
        $name = $this->_request->getParam('name', '');
        $order = $this->_request->getParam('order', '');
        if (($order != '') && ($name != ''))
            $data = $model->getAllOrder($name, $order);
        else
            $data = $model->getAll();
        Zend_View_Helper_PaginationControl::setDefaultViewPartial(
        APPLICATION_PATH . '\modules\administrator\views\pagination.phtml');
        $pa = Zend_Paginator::factory($data);
        $pa->setItemCountPerPage(10);
        $current = $this->_request->getParam('page');
        $this->view->page = $current;
        $pa->setCurrentPageNumber($current);
        $this->view->data = $pa;
    }
    public function addAction ()
    {
        $model = new Model_Webmaster_Webmaster();
        $checkEmail = new Zend_Validate_EmailAddress();
        $checkphone = new Zend_Validate_Digits();
        if ($this->_request->isPost()) {
            $error = array();
            //Lấy thông tin của form post
            $data = $this->_request->getParams();
            if ($data['email'] != '') {
                if (! $checkEmail->isValid($data['email']))
                    $error['email'] = 'Email không đúng cấu trúc';
                if ($model->checkEmail($data['email']))
                    $error['email'] = 'Email này đã tồn tại';
            } else
                $error['email'] = ' Email không được rỗng';
            if ($data['first_name'] == '')
                $error['first_name'] = 'Tên không được rỗng';
            if ($data['last_name'] == '')
                $error['last_name'] = 'Họ không được rỗng';
            if ($data['password'] == '') {
                $error['password'] = 'Mật khẩu không được rỗng';
            } else {
                if ($data['password'] != $data['repass'])
                    $error['password'] = 'Mật khẩu không xác nhận đúng';
            }
            if ($data['repass'] == '') {
                $error['repass'] = 'Vui lòng xác nhận mật khẩu';
            }
            if ($data['phone'] != '')
                if (! $checkphone->isValid($data['phone'])) {
                    $error['phone'] = 'Điện thoại phải là số';
                }
                 // Kiểm tra và upload hình ảnh
            $image = '';
            //Xử lý hình ảnh
            $imageUpload = new Zend_File_Transfer_Adapter_Http();
            $imageUpload->setDestination(
            realpath(APPLICATION_PATH . '/../public/images/webmasters'));
            //Set Image Validator
            $imageUpload->addValidator('Size', false, 
            array('min' => 2000, 'max' => 2097152));
            $imageUpload->addValidator('Extension', false, 
            array('jpg', 'png', 'gif', 'jpeg'));
            $imageInfo = $imageUpload->getFileInfo();
            foreach ($imageInfo as $file => $fileinfo) {
                if (($imageUpload->isUploaded($fileinfo['name'])) &&
                 ($imageUpload->isValid($fileinfo['name'])))
                    if (! $imageUpload->receive($fileinfo['name'])) {
                        $error['image'] = $imageUpload->getMessages();
                    } else {
                        $image = $fileinfo['name'];
                    }
            }
            //Kiểm tra lỗi - nếu có thì hiển thị lỗi - còn không save Webmaster lại
            if (count($error) > 0) {
                $this->view->error = $error;
                $this->view->data = $data;
            } else {
                $date_cre = date('Y-m-d H:i:s', time());
                $date_mod = date('Y-m-d H:i:s', time());
                $hash = QSource_System_Helper_String::generateRandomString(6);
                $password = md5($data['password'] . '-' . $hash);
                $item = array('image' => $image, 'hash' => $hash, 
                'date_cre' => $date_cre, 'date_mod' => $date_mod, 
                'phone' => $data['phone'], 'user_cre' => $this->user->id, 
                'birthday' => $data['birthday'], 'address' => $data['address'], 
                'province' => $data['province'], 'district' => $data['district'], 
                'status' => $data['status'], 'first_name' => $data['first_name'], 
                'last_name' => $data['last_name'], 
                'middle_name' => $data['middle_name'], 'password' => $password, 
                'email' => $data['email'], 'sex' => $data['sex'], 
                'role' => $data['role']);
                $model->insert($item);
                $this->view->success = 'Đã thêm tài khoản người dùng thành công';
            }
        }
    }
    public function removeAction ()
    {
        Zend_Layout::resetMvcInstance();
        $this->_helper->viewRenderer->setNoRender();
        $id = $this->_request->getParam('id', '');
        if (($id != '') && ($id != $this->user->id)) {
            $model = new Model_Webmaster_Webmaster();
            $item = $model->getItemId($id);
            //Kiểm tra xem user có upload ảnh không? Nếu có thì xóa file ảnh trên ổ cứng.
            if ($item['image'] != '')
                unlink(realpath(WEBMASTER_PATH . '/' . $item['image']));
            $model->delete('id = ' . $id);
        }
    }
    public function removeimgAction ()
    {
        Zend_Layout::resetMvcInstance();
        $this->_helper->viewRenderer->setNoRender();
        $id = $this->_request->getParam('id', '');
        if ($id != '') {
            $model = new Model_Webmaster_Webmaster();
            $item = $model->getItemId($id);
            //Kiểm tra xem user có upload ảnh không? Nếu có thì xóa file ảnh trên ổ cứng.
            if ($item['image'] != '') {
                unlink(realpath(WEBMASTER_PATH . '/' . $item['image']));
                $model->update(array('image' => ''), 'id = ' . $id);
            }
        }
    }
    public function editAction ()
    {
        $id = $this->_request->getParam('id', '');
        if ($id == '')
            $this->_redirect('/administrator/webmaster');
        $model = new Model_Webmaster_Webmaster();
        if ($this->_request->isPost()) {
            if ($this->user->id == $id) {
                $checkphone = new Zend_Validate_Digits();
                $error = array();
                $data = $this->_request->getParams();
                if ($data['phone'] != '')
                    if (! $checkphone->isValid($data['phone'])) {
                        $error['phone'] = 'Điện thoại phải là số';
                    }
                     // Kiểm tra và upload hình ảnh
                $image = '';
                //Xử lý hình ảnh
                if (isset($_FILES['image'])) {
                    $imageUpload = new Zend_File_Transfer_Adapter_Http();
                    $imageUpload->setDestination(
                    realpath(APPLICATION_PATH . '/../public/images/webmasters'));
                    //Set Image Validator
                    $imageUpload->addValidator('Size', 
                    false, array('min' => 2000, 'max' => 2097152));
                    $imageUpload->addValidator('Extension', false, 
                    array('jpg', 'png', 'gif', 'jpeg'));
                    $imageInfo = $imageUpload->getFileInfo();
                    foreach ($imageInfo as $file => $fileinfo) {
                        if (($imageUpload->isUploaded($fileinfo['name'])) &&
                         ($imageUpload->isValid($fileinfo['name'])))
                            if (! $imageUpload->receive($fileinfo['name'])) {
                                $error['image'] = $imageUpload->getMessages();
                            } else {
                                $image = $fileinfo['name'];
                            }
                    }
                } else {
                    $data['image'] = '';
                }
                //Kiểm tra lỗi - nếu có thì hiển thị lỗi - còn không save Webmaster lại
                if (count($error) > 0) {
                    $this->view->error = $error;
                    //Fix lỗi hiển thị ảnh sai khi validate báo lỗi
                    $item = $model->getItemId($id);
                    $data['image'] = $item['image'];
                    $this->view->data = $data;
                } else {
                    $date_mod = date('Y-m-d H:i:s', time());
                    if ($image != '')
                        $item = array('image' => $image, 'date_mod' => $date_mod, 
                        'phone' => $data['phone'], 'birthday' => $data['birthday'], 
                        'address' => $data['address'], 
                        'province' => $data['province'], 
                        'district' => $data['district'], 
                        'status' => $data['status'], 
                        'first_name' => $data['first_name'], 
                        'last_name' => $data['last_name'], 
                        'middle_name' => $data['middle_name'], 
                        'sex' => $data['sex'], 'role' => $data['role']);
                    else
                        $item = array('date_mod' => $date_mod, 
                        'phone' => $data['phone'], 'birthday' => $data['birthday'], 
                        'address' => $data['address'], 
                        'province' => $data['province'], 
                        'district' => $data['district'], 
                        'status' => $data['status'], 
                        'first_name' => $data['first_name'], 
                        'last_name' => $data['last_name'], 
                        'middle_name' => $data['middle_name'], 
                        'sex' => $data['sex'], 'role' => $data['role']);
                    $model->update($item, 'id = ' . $id);
                    $this->_redirect('/administrator/webmaster');
                }
            } else {
                $date_mod = date('Y-m-d H:i:s', time());
                $data = $this->_request->getParams();
                $item = array('role' => $data['role'], 'date_mod' => $date_mod, 
                'status' => $data['status']);
                $model->update($item, 'id = ' . $id);
                $this->_redirect('/administrator/webmaster');
            }
        } else {
            $data = $model->getItemId($id);
            $this->view->data = $data;
        }
    }
    public function userinfoAction ()
    {
        $id = $this->_request->getParam('id', '');
        if ($id == '')
            $this->_redirect('/administrator/webmaster');
        else {
            if ($this->_request->isPost()) {
                $data = $this->_request->getParams();
                if ($data['btback'] != '')
                    $this->_redirect('/administrator/webmaster');
                if ($data['btedit'] != '')
                    $this->_redirect('/administrator/webmaster/edit/id/' . $id);
                if ($data['btchangepass'] != '')
                    $this->_redirect(
                    '/administrator/webmaster/changepass/id/' . $id);
            }
            $model = new Model_Webmaster_Webmaster();
            $data = $model->getItemId($id);
            $this->view->data = $data;
        }
    }
    public function resetpassAction ()
    {
        $id = $this->_request->getParam('id', '');
        if ($this->_request->isPost()) {
            $username = $this->_request->getParam('email', '');
            $pswd = $this->_request->getParam('password', '');
            if(strlen($pswd) >= 6){
	            $model = new Model_Webmaster_Webmaster();
	            $hash = $model->getHashById($id);
	            //Set password cho item
	            $item = array('password' => md5($pswd . '-' . $hash));
	            $model->update($item, 'id = ' . $id);	            
	            $this->view->success = 'Cập nhật mật khẩu người dùng thành công';
	            $this->_redirect('/administrator/webmaster');
            }else{
            	 $error = array();
            	 $error['password'] = "Mật khẩu không đủ dài (6 kí tự trở lên).";
            	 if($id != ''){
            	 	 $model = new Model_Webmaster_Webmaster();
	                 $data = $model->getItemId($id);
	                 $this->view->data = $data;
            	 }
                 $this->view->error = $error;
            }
        } else {
            if ($id == '')
                $this->_redirect('/administrator/webmaster');
            else {
            	$model = new Model_Webmaster_Webmaster();
                $data = $model->getItemId($id);
                $this->view->data = $data;
            }
        }
    }
    public function findstartwithAction(){
    	$id = $this->_request->getParam('id','');
    	$model = new Model_Webmaster_Webmaster();
    	$data = $model->getAllStartWith($id);
    	Zend_View_Helper_PaginationControl::setDefaultViewPartial(
        APPLICATION_PATH . '\modules\administrator\views\pagination.phtml');
        $pa = Zend_Paginator::factory($data);
        $pa->setItemCountPerPage(10);
        $current = $this->_request->getParam('page');
        $this->view->page = $current;
        $pa->setCurrentPageNumber($current);
        $this->view->data = $pa;    	 
    	$this->renderScript('webmaster/index.phtml'); 
    }

    //Action search - result
    
    public function searchAction(){
    	$keyword = $this->_request->getParam('keyword','');
    	if($keyword == '')
    	    $this->_redirect('/administrator/webmaster');
    	$model = new Model_Webmaster_Webmaster();
    	$data = $model->getAllStartWith($keyword);
    	Zend_View_Helper_PaginationControl::setDefaultViewPartial(
    	APPLICATION_PATH . '\modules\administrator\views\pagination.phtml');
    	$pa = Zend_Paginator::factory($data);
    	$pa->setItemCountPerPage(10);
    	$current = $this->_request->getParam('page');
    	$this->view->page = $current;
    	$pa->setCurrentPageNumber($current);
    	$this->view->data = $pa;
    	$this->renderScript('webmaster/index.phtml');
    }
   
    //Data Email Json - Data autocomplete for jqueryui
    public function dataemailjsonAction(){
        $model = new Model_Webmaster_Webmaster();
        $term = $this->_request->getParam('term','');
        if($term=='')
       		$data = $model->getAll();
        else
            $data = $model->getAllStartWith($term);
        $this->view->data = $data;
        $this->_helper->layout->disableLayout();
    }
    public function changepassAction ()
    {
        $id = $this->_request->getParam('id', '');
        $model = new Model_Webmaster_Webmaster();
        if ($id == '')
            $this->_redirect('/administrator/webmaster');
        else {
            //User chỉ đổi password của chính mình
            if ($id != $this->user->id)
                $this->_redirect('/administrator/webmaster');
            if ($this->_request->isPost()) {
                //Get data from form
                $data = $this->_request->getParams();
                $error = array();
                $oldpassword = $this->_request->getParam('oldpassword', '');
                $newpassword = $this->_request->getParam('newpassword', '');
                $repassword = $this->_request->getParam('repassword', '');
                if ($oldpassword == '')
                    $error['oldpassword'] = "Vui lòng nhập chính xác password.";
                else 
                    if (! $model->checkPassword($id, $oldpassword))
                        $error['oldpassword'] = "Mật khẩu không chính xác. Vui lòng nhập lại !";
                if ($newpassword == '')
                    $error['newpassword'] = "Vui lòng nhập password mới.";
                if ($repassword == '')
                    $error['repassword'] = "Vui lòng nhập password để xác nhận.";
                if ($newpassword && $repassword)
                    if ($newpassword != $repassword)
                        $error['repassword'] = "Mật khẩu xác nhận không chính xác. Vui lòng nhập lại.";
                if (count($error) > 0) {
                    $this->view->error = $error;
                    $this->view->data = $data;
                } else {
                    $hash = $model->getHashById($id);
                    //Set password cho item
                    $item = array(
                    'password' => md5($newpassword . '-' . $hash));
                    $model->update($item, 'id = ' . $id);
                    $this->view->success = 'Cập nhật mật khẩu người dùng thành công';
                }
            } else {
                $data = $model->getItemId($id);
                $this->view->data = $data;
            }
        }
    }
}